﻿#region License
//------------------------------------------------------------
// Copyright (c) Denis Vuyka.  All rights reserved.
// This source code is subject to terms and conditions of the 
// Microsoft Reciprocal License (Ms-RL) License for Carcass. 
// A copy of the license can be found in the License.txt file 
// at the root of this distribution. 
// By using this source code in any fashion, you are agreeing 
// to be bound by the terms of the 
// Microsoft Reciprocal License (Ms-RL) License
// You must not remove this notice from this software.
//------------------------------------------------------------
#endregion

using System;
using System.ComponentModel.Composition;
using System.IO;
using Carcass.Contents;

namespace DemoShell.Modules.TextDocument
{
  [Export(Carcass.GlobalContracts.Document)]
  [Document(DocumentTypes.TextFile, "Text File")]
  [CompositionOptions(CreationPolicy = CreationPolicy.NonShared)]
  public class TextDocument : DocumentBase
  {
    private string _Text;
    public string Text
    {
      get { return _Text; }
      set
      {
        if (_Text == value) return;
        _Text = value;
        OnPropertyChanged("Text");
      }
    }

    #region DocumentBase implementation

    public override bool CanLoad
    {
      get { return true; }
    }

    public override bool CanSave
    {
      get { return false; }
    }

    public override void Load(Stream stream)
    {
      using (StreamReader reader = new StreamReader(stream))
      {
        this.Text = reader.ReadToEnd();
      }
    }

    public override void Save(Stream stream)
    {
      throw new NotSupportedException();
    }
    #endregion
  }
}
